/**
 * @author   Ivan Andonov
 * @email:   ivan.andonov[at]gmail[dot]com
 *
 * @require  sjs, sjs.ShortcutCall
 * @use      sjs.Strings, sjs.Utils
 * @optional 
 **/

(function() {
	sjs.create('sjs.Styles', {
		
		// PUBLIC STATIC METHODS
		setStyles : function(el, styles) {
			for (var i = 0; i < styles.length; i++) {
				$style(el, styles[i][0], styles[i][1]);
			}
		},
		
		setStyle : function(el, style, value) {
			el = $element(el);
			if (el && el.style) {
				el.style[style] = value;
			}
		},
		
		getStyle : function(el, style) {
			el = $element(el);
			style = String(style).toLowerCase();
			if (el && el.currentStyle) {
				return el.currentStyle[this.formatStyle(style)];
			} else if (window.getComputedStyle) {
				return document.defaultView.getComputedStyle(el, null).getPropertyValue(style);
			} else if (el.style) {
				return el.style[this.formatStyle(style)];
			}
			return null;
		},
		
		formatStyle : function(str) {
			var _arr = str.split("-");
			for (var i = 1, len = _arr.length; i < len; i++) {
				_arr[i] = sjs.Strings.upperFirst(_arr[i]);
			}
			return _arr.join('');
		},
		
		styleToNum : function(val) {
			val = String(val);
			var c;
			var str = '';
			var len = val.length;
			for (var i = 0; i<len; i++) {
				c = val.slice(i, i+1);
				if (isNaN(str+c)) {
					break;
				}
				str += c;
			}
			//if (!str.length) str = 0;
			return Number(str) || 0;
		}
		
	});
	
	if ($shortcut) {
		$shortcut('style', sjs.Styles, function() {
			if (arguments.length < 3) {
				if (typeof(arguments[1]) == 'string') {
					return sjs.Styles.getStyle.apply(sjs.Styles, arguments);
				} else {
					sjs.Styles.setStyles.apply(sjs.Styles, arguments);
				}
			} else {
				sjs.Styles.setStyle.apply(sjs.Styles, arguments);
			}
		});
	}
	
})();